# Make file for Test_radiation function

#========================================================================================

DEBUG ?= 1
ifeq ($(DEBUG), 1)
#Intel Fortran
#=======================================
#    COMP_FLAGS = -warn unused -debug full -g -check all -r8 -traceback -ftrapuv -c -o  $@
#    LINK_FLAGS = -v -g -debug -check all -traceback -r8

# Cray Fortran
#=======================================
    COMP_FLAGS = -g -R bc -Ktrap=denorm,divz,fp,inv,ovf,unf -s real64 -c -eZ -o $@         
    LINK_FLAGS = -s real64
else
#Intel Fortran
#=======================================
#    COMP_FLAGS = -O2 -r8 -c -o $@
#    LINK_FLAGS = -v -r8

# Cray Fortran
#=======================================
    COMP_FLAGS = -s real64 -c -eZ -o $@
    LINK_FLAGS = -s real64
endif

#Intel Fortran
#=======================================
#COMPILER = ifort

#MPI Intel Fortran
#=======================================
#COMPILER = mpif90

# Cray Fortran
#=======================================
COMPILER = ftn

COMPILE_F90 = $(COMPILER) $(COMP_FLAGS)
LINK        = $(COMPILER) $(LINK_FLAGS)

# Deprecated compilation flags
#COMPILE_F90 = ifort -debug -g -check bounds -prof-gen -traceback -r8 -c -o  $@
#COMPILE_F90 = ifort -ipo -prof-use -r8 -c -o  $@
#LINK = ifort -v -g -debug -check all -traceback -r8
#LINK = ifort -v -debug -g -check bounds -traceback -r8 -prof-gen
#LINK = ifort -v -r8 -prof-use
#========================================================================================

PROG = ../Run/Test_Radiation.x

#========================================================================================
# Set path for source files.

MODULES	= ../Source/

#========================================================================================

#TARGETS:
all: executable

clean :; @rm -f *.o *.mod $(PROG)

#-----------------------------------------------------------------------------------------

OBJ_PRIMARY_MODULES =  \
	topology_m.o   \
	param_m.o      \
	radiation_m.o 

OBJ_MAIN =             \
	Test_Radiation.o

#----------------------------------------------------------------------------------------
#--------------------------------------  Primary Modules  -------------------------------
#----------------------------------------------------------------------------------------

param_m.o: $(MODULES)param_m.f90
	$(COMPILE_F90) $(MODULES)param_m.f90
radiation_m.o: $(MODULES)radiation_m.f90
	$(COMPILE_F90) $(MODULES)radiation_m.f90
topology_m.o: $(MODULES)topology_m.f90
	$(COMPILE_F90) $(MODULES)topology_m.f90

#----------------------------------------------------------------------------------------
#--------------------------------------  Main Routine  -- -------------------------------
#----------------------------------------------------------------------------------------
 
Test_Radiation.o : $(MODULES)Test_Radiation.f90 $(MODULES)param_m.f90 $(MODULES)radiation_m.f90 $(MODULES)topology_m.f90
	$(COMPILE_F90) $(MODULES)Test_Radiation.f90

#========================================================================================

executable: $(OBJ_PRIMARY_MODULES) $(OBJ_MAIN)
	$(LINK) $(OBJ_PRIMARY_MODULES) $(OBJ_MAIN) -o $(PROG) 
